/**
 * 导入测试工具
 * 用于验证所有模块导入是否正常工作
 */

// 测试类型导入
import type {
  DataSource,
  DataSourceCreate,
  DatabaseType,
  TestStatus
} from '../types/datasource';

// 测试服务导入
import { datasourceApi } from '../services/datasourceApi';

// 测试工具导入
import { requestGuard } from '../utils/requestGuard';

// 测试Hook导入
import { usePermission } from '../hooks/usePermission';

// 测试上下文导入
import { useAuth } from '../contexts/AuthContext';

/**
 * 导入测试函数
 */
export function testImports(): boolean {
  try {
    console.log('🧪 开始测试模块导入...');
    
    // 测试类型
    const testType: DatabaseType = 'mysql' as DatabaseType;
    const testStatus: TestStatus = 'success' as TestStatus;
    
    console.log('✅ 类型导入正常:', { testType, testStatus });
    
    // 测试服务
    if (typeof datasourceApi.getDatasources === 'function') {
      console.log('✅ datasourceApi 导入正常');
    } else {
      throw new Error('datasourceApi 导入失败');
    }
    
    // 测试工具
    if (typeof requestGuard.canRequest === 'function') {
      console.log('✅ requestGuard 导入正常');
    } else {
      throw new Error('requestGuard 导入失败');
    }
    
    // 测试Hook（这些在组件外部无法直接测试，只验证导入）
    if (typeof usePermission === 'function') {
      console.log('✅ usePermission 导入正常');
    } else {
      throw new Error('usePermission 导入失败');
    }
    
    if (typeof useAuth === 'function') {
      console.log('✅ useAuth 导入正常');
    } else {
      throw new Error('useAuth 导入失败');
    }
    
    console.log('🎉 所有模块导入测试通过！');
    return true;
    
  } catch (error: any) {
    console.error('❌ 模块导入测试失败:', error.message);
    return false;
  }
}

// 在开发环境下自动运行测试
if (process.env.NODE_ENV === 'development') {
  // 延迟执行，确保所有模块都已加载
  setTimeout(() => {
    testImports();
  }, 1000);
  
  // 挂载到window对象
  (window as any).testImports = testImports;
  console.log('🔧 导入测试工具已挂载到 window.testImports');
}

export default testImports;
